package com.itlong.cloud.equip.property;

import com.itlong.cloud.POJO.DTO.property.DeviceAiCameraInfoDTO;
import com.itlong.cloud.POJO.VO.property.PropertyDeviceAiCameraInfoVO;
import com.itlong.cloud.utils.page.Page;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * <desc>
 *      ai摄像头服务层接口暴露
 * </desc>
 *
 * @createDate2021/5/28
 **/
@FeignClient(name = "equip-service")
public interface IPropertyAICameraServiceClient {

    /**
     * <desc>
     *      添加AI摄像头
     * </desc>
     *
     * @param cameraInfoDTO 摄像头相关请求入参DTO
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    @PostMapping(path = "/property/equip/aiCamera/save")
    String save(@RequestBody DeviceAiCameraInfoDTO cameraInfoDTO) throws Exception;

    /**
     * <desc>
     *      修改AI摄像头
     * </desc>
     *
     * @param cameraInfoDTO 摄像头相关请求入参DTO
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    @PostMapping(path = "/property/equip/aiCamera/update")
    String update(@RequestBody DeviceAiCameraInfoDTO cameraInfoDTO) throws Exception;

    /**
     * <desc>
     *      校验电梯是否已绑定其它摄像头
     * </desc>
     *
     * @param cameraInfoDTO 摄像头相关请求入参DTO
     * @return 结果集数量
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    @PostMapping(path = "/property/equip/aiCamera/checkElevatorIsBind")
    Integer checkElevatorIsBind(@RequestBody DeviceAiCameraInfoDTO cameraInfoDTO) throws Exception;

    /**
     * <desc>
     *      根据设备ID获取AI摄像头详情
     * </desc>
     *
     * @param cameraInfoDTO 摄像头相关请求入参DTO
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    @PostMapping(path = "/property/equip/aiCamera/getAiCameraDetails")
    PropertyDeviceAiCameraInfoVO getAiCameraDetails(@RequestBody DeviceAiCameraInfoDTO cameraInfoDTO) throws Exception;

    /**
     * <desc>
     *      批量删除ai摄像头信息
     * </desc>
     *
     * @param cameraInfoDTO 摄像头相关请求入参DTO
     * @return
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    @PostMapping(path = "/property/equip/aiCamera/batchRemove")
    void batchRemove(@RequestBody DeviceAiCameraInfoDTO cameraInfoDTO) throws Exception;

    /**
     * <desc>
     *      AI摄像头列表
     * </desc>
     *
     * @param cameraInfoDTO 摄像头相关请求入参DTO
     * @return 列表数据
     * @author Juguang.S
     * @createDate 2021/06/02
     */
    @PostMapping(path = "/property/equip/aiCamera/getAiCameraListByPage")
    Page<PropertyDeviceAiCameraInfoVO> getAiCameraListByPage(@RequestBody DeviceAiCameraInfoDTO cameraInfoDTO) throws Exception;


}
